package com.scm.biz.service;

import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import com.scm.biz.bean.Customer;
import com.scm.biz.query.customer.CustomerQuery;
import com.scm.biz.result.CustomerResult;
import com.scm.core.bean.exp.UfdmException;

/**
 * 客户类的服务类
 * @author Young
 * @Date 2016.11.15
 *
 */
public interface CustomerService{
	
	/**
	 * 根据客户ID,获取客户信息
	 * @param id 客户ID
	 * @return 客户类的查询结果类
	 */
	CustomerResult getById(int id);
	
	/**
	 * 根据查询参数查询客户列表
	 * @param customerQuery 查询参数
	 * @return 客户类的查询结果类集合
	 */
	List<CustomerResult> getList(CustomerQuery customerQuery);
	
	/**
	 * 根据查询参数，查询客户数
	 * @param customerQuery 查询参数
	 * @return	客户数
	 */
	int getTotalByQuery(CustomerQuery customerQuery);
	
	/**
	 * 保存客户信息
	 * @param customer 客户类
	 * @return 保存的客户数
	 */
	void save(MultipartHttpServletRequest req,Customer customer)throws UfdmException ;
	
	/**
	 * 更新客户信息
	 * @param customer 客户类
	 * @return 更新的客户数
	 */
	int modifyById(MultipartHttpServletRequest req,Customer customer)throws UfdmException ;
	
	/**
	 * 根据客户ID，删除客户信息
	 * @param id 客户ID
	 * @return 删除的客户数
	 */
	int removeById(int id);
	
	/**
	 * 根据客户名称，查询客户
	 * @param name
	 * @return
	 */
	int getByFullname(Long id,String fullname);
	
	/**
	 * 根据客户简称，查找客户
	 * @param abbreviation
	 * @return
	 */
	int getByAbbreviation(Long id,String abbreviation);
	
	/**
	 * 获取客户的ID和全称
	 * @return
	 */
	List<Map<String,Object>> getAllCustomer();
	
	/**
	 * 根据客户名称模糊查询客户的ID和全称
	 * @return
	 */
	List<Map<String,Object>> getCustomerByName(String name);

	
	List<Customer> selectList();

	
	/**
	 * 查询客户数
	 * @return	客户数
	 */
	int getTotal();
	
	/**
	 * 查询签约客户数
	 * @return
	 */
	int getSignedCustomerCount();
	
}
